#include "printLog.h"

void printfLog(const char *username, const char *message, int line, const char *file, const char *func) {
//    pthread_mutex_lock(&log_mutex);  // 加锁

    // 获取当前时间（线程安全版本）
    time_t now = time(NULL);
    struct tm tm_info;
    localtime_r(&now, &tm_info);  // 使用线程安全的 localtime_r

    // 格式化时间字符串
    char time_str[20];
    strftime(time_str, sizeof(time_str), "%Y-%m-%d %H:%M:%S", &tm_info);

    // 拼接日志信息（按你的原始顺序：username + time + message）
    char buf[1024] = {0};
    strcat(buf, username ? username : "unknown");  // 用户名的兜底处理
    strcat(buf, " ");                               // 添加分隔符
    strcat(buf, time_str);
    strcat(buf, " ");
    strcat(buf, message);

    // 打开日志文件（每次调用都打开关闭，避免全局状态）
    FILE *log_file = fopen("messageInf.log", "a");
    if (!log_file) {
        perror("Failed to open log file");
        //pthread_mutex_unlock(&log_mutex);
        return;
    }

    // 写入完整日志信息（一次性写入）
    fprintf(log_file, "[%s][User: %s] %s (Location: %s:%d %s)\n",
            time_str,
            username ? username : "unknown",
            message,
            file,
            line,
            func);

    fclose(log_file);
  //  pthread_mutex_unlock(&log_mutex);  // 解锁
}
